/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gla.centralhotel.dao.interfaces;

import gla.centralhotel.exception.CollectionRetrieverException;
import gla.centralhotel.model.Agency;
import gla.centralhotel.model.Customer;
import gla.centralhotel.model.RoomBooking;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Local;

/**
 *
 * @author Rivo
 */
@Local
public interface IRoomBookingDAO {

    RoomBooking create(RoomBooking roomBooking);

    RoomBooking edit(RoomBooking roomBooking);

    void remove(RoomBooking roomBooking);

    RoomBooking find(Object id);

    List<RoomBooking> findAll();
    
    /**
     * Recupere une arrayList de reservation pour une agance
     * @param agency
     * @return
     * @throws gla.centralhotel.exception.CollectionRetrieverException
     */
    public ArrayList<RoomBooking> getAllRoomBookingByAgency(Agency agency) throws CollectionRetrieverException;

    /**
     * Recupere une arrayList de reservation pour un customer
     * @param customer
     * @return
     * @throws gla.centralhotel.exception.CollectionRetrieverException
     */
    public ArrayList<RoomBooking> getAllRoomBookingByCustomer(Customer customer)throws CollectionRetrieverException;

    /**
     * Recupere une arrayList de reservation pour un hotel
     * @param hotel
     * @return
     * @throws gla.centralhotel.exception.CollectionRetrieverException
     */
    public java.util.ArrayList<gla.centralhotel.model.RoomBooking> getAllRoomBookingByHotel(gla.centralhotel.model.Hotel hotel) throws gla.centralhotel.exception.CollectionRetrieverException;
}
